package com.ys.control;
import com.ys.bean.ProductBean;

import com.ys.service.IProductService;
import com.ys.service.impl.ProductService;
import com.ys.utils.MyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.List;

@Controller
public class ProductLoginControl {
    @Resource
    private IProductService productService;

    /*
    映射关系：要求实体类的属性名和前台页面的表单控件的name属性值一一对应
    课堂作业：
        如果使用 @RequestParam 对方法参数进行绑定，是否可行？
     */
    @RequestMapping("/login3")
    public ModelAndView doLogin3(ProductBean productB) {
        System.out.println("basepath:" + System.getProperty("server.basePath"));
        // 返回的视图对象
        ModelAndView mav = new ModelAndView();
        // 设置modelandview要显示的页面名:默认进入登录成功页面
        mav.setViewName("../../productlogined");

        // 调用service的接口方法，进行登录的业务逻辑处理
        List<ProductBean> lstProducts = productService.doLogin(productB);



        // 返回ModelAndView对象
        return mav;
    }

    /**
     * 保存和修改用于信息
     *
     * @param productBean 用户参数实体类

     * @return 结果视图
     */

    @RequestMapping("/saveOrUpdateProduct")
    public String saveOrUpdateProduct(ProductBean productBean) {

        // 调用Service层进行用户信息数据保存和修改操作
        int i = productService.saveOrUpdateProduct(productBean);
        // 根据操作结果进行视图转发处理
        return "productAddDetail";
    }

    @RequestMapping("/saveOrUpdateProduct2")
    public String saveOrUpdateProduct2(ProductBean productBean) {


        // 调用Service层进行用户信息数据保存和修改操作
        int i = productService.saveOrUpdateProduct2(productBean);
        // 根据操作结果进行视图转发处理
        return "productAddDetail2";
    }

    /**
     * 添加了 @ResponseBody 表名该方法响应的是一个ajax类型的请求，
     * retrun返回的就是对ajax请求的响应内容，而不再是视图的路径
     */


    /**
     * ajax进行数据查询处理
     *
     * @param productBean 查询参数信息
     * @return 查询结果集
     */
    @ResponseBody
    @RequestMapping("/doAjaxProductQueryByPramas")
    public List<ProductBean> doAjaxQueryByPramas(ProductBean productBean) {
        // 调用service层经进行数据库查询操作
        List<ProductBean> lstProducts = productService.selectProductByParams(productBean);
        // 在springmvc中直接放回数据结构，springmvc会自动把数据结果集转换为 json数据串发给客户端
        // 如果不是springmvc框架，则需要使用手动或者第三方工具将结果集转换为json字符串发回给客户端
        return lstProducts;

    }

    /**
     * 使用ajax进行删除操作
     *
     * @param
     * @return
     */
    @ResponseBody
    @RequestMapping("/doAjaxProductDeleteByID")
    public int doAjaxQueryByPramas(Integer prId) {
//默认返回值
        int i=0;
//调用service层进行删除操作
        i=productService.deleteProductByID(prId);
        return i;
    }
}
